﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Crosland.Automotriz.Facade.Interface;
using Crosland.Automotriz.Facade.Facade;
using System.Data;
using System.ComponentModel;
using Crosland.Automotriz.Entidad;
using Crosland.Automotriz.Core;
using Crosland.Automotriz.Seguridad.Entity;
using Crosland.Automotriz.Seguridad.Business;
using DevExpress.Web.ASPxGridView;
using DevExpress.Web.ASPxEditors;
//using DevExpress.Web.ASPxClasses.Design.Forms;
using System.Configuration;
using Crosland.Automotriz.Logic.Linq;
using Crosland.Automotriz.Logic;

namespace Crosland.Automotriz.Web.Vehiculos
{
    public partial class wFrmCompensacionVehiculoAsociar : BaseForm
    {
        iFacadeCompensacionVehiculo BL_CompensacionVehiculo = new FacadeCompensacionVehiculo();
        clsUsuarioLogic usu = new clsUsuarioLogic();
        clsT_Mae_Tabla_General_DetLogic TablaDetLogic = new clsT_Mae_Tabla_General_DetLogic();

        protected override void Inicializar()
        {
            if (Session["FechaCompensacion"] == null)
            {
                lblFechaCompensacion.Text = string.Empty;
                lblTipoCambio.Text = "0";
            }
            else
            {
                lblFechaCompensacion.Text = String.Format("{0:dd/MM/yyyy}", Convert.ToDateTime(Session["FechaCompensacion"]));

                DateTime fecha = Convert.ToDateTime(Session["FechaCompensacion"]);
                decimal TipoCambio = BL_CompensacionVehiculo.TipoCambio(fecha);
                lblTipoCambio.Text = TipoCambio.ToString("n3");

            }

            ddlAnio.Value = DateTime.Today.Year;
            ddlMes.SelectedIndex = DateTime.Today.Month - 1;
            CargarDepositos();
            CargarFacturas();
            ddlOficina.SelectedIndex = 17;
            QuitarSeleccionGrilla();
            Totales();
            CargarMonedas();
            CargarClaseFactura();
            UsuariosCorreo();


        }

        protected void CargarMonedas()
        {
            cboTipoOperacion.DataSource = BL_CompensacionVehiculo.ListarMonedas();
            cboTipoOperacion.DataBind();
            cboTipoOperacion.Items[0].Selected = true;

        }

        protected void btnSalir_Click(object sender, EventArgs e)
        {
            Session["Facturas"] = null;
            Session["TablaCompensacion"] = null;
            Response.Redirect("/Vehiculos/wFrmCompensacionVehiculo.aspx?id=3&sub=35");
        }

        protected void CargarDepositos()
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["TablaCompensacion"];

            List<int> depositos = (List<int>)Session["ListaDepositos"];
            List<Object> resultado = BL_CompensacionVehiculo.SeleccionDepositos(depositos).ToList();

            string[] datos = resultado[0].ToString().Split(new char[] { ',', '=' });

            lblCliente.Text = datos[1];
            lblIdCliente.Text = datos[3];

            grdDepositos.DataSource = dt;
            grdDepositos.DataBind();
        }

        protected void CargarFacturas()
        {
            CargarOficinas();

            int idCliente = Convert.ToInt32(lblIdCliente.Text);
            int anio = Convert.ToInt32(ddlAnio.Value);
            int mes = Convert.ToInt32(ddlMes.Value);
            int idOfiVta = Convert.ToInt32(ddlOficina.Value);
            int estado = Convert.ToInt32(ddlestado.Value);
            grdFacturas.DataSource = BL_CompensacionVehiculo.FacturasXCliente(idCliente, anio, mes, idOfiVta, estado);
            grdFacturas.DataBind();

        }

        protected void CargarOficinas()
        {
            ddlOficina.DataSource = BL_CompensacionVehiculo.ListarOficinaVenta();
            ddlOficina.DataBind();
        }


        protected void QuitarSeleccionGrilla()
        {

            for (int i = 0; i < grdFacturas.VisibleRowCount; i++)
            {

                if (grdFacturas.Selection.IsRowSelected(i))
                {
                    grdFacturas.Selection.SetSelection(i, false);

                }

            }
        }


        protected void Totales()
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["TablaCompensacion"];

            decimal totDebeSoles = 0;
            decimal totDebeDolar = 0;
            decimal totHaberSoles = 0;
            decimal totHaberDolar = 0;

            for (int x = 0; x < dt.Rows.Count; x++)
            {
                totDebeSoles = totDebeSoles + Convert.ToDecimal(dt.Rows[x]["DebeSoles"]);
                totDebeDolar = totDebeDolar + Convert.ToDecimal(dt.Rows[x]["DebeDolar"]);
                totHaberSoles = totHaberSoles + Convert.ToDecimal(dt.Rows[x]["HaberSoles"]);
                totHaberDolar = totHaberDolar + Convert.ToDecimal(dt.Rows[x]["HaberDolar"]);
            }

            lblTotDebeSoles.Text = totDebeSoles.ToString("n2");
            lblTotDebeDolar.Text = totDebeDolar.ToString("n2");
            lblTotHaberSoles.Text = totHaberSoles.ToString("n2");
            lblTotHaberDolar.Text = totHaberDolar.ToString("n2");


        }


        protected void btnBuscar_Click(object sender, EventArgs e)
        {
            CargarFacturas();
        }

        protected void ReenumerarItem(DataTable d)
        {

            for (int x = 0; x <= d.Rows.Count - 1; x++)
            {
                d.Rows[x].BeginEdit();
                d.Rows[x][0] = x + 1;
                d.Rows[x].EndEdit();
            }

        }

        protected void grdDepositos_RowDeleting(object sender, DevExpress.Web.Data.ASPxDataDeletingEventArgs e)
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["TablaCompensacion"];

            DataRow row = (dt.Rows.Find(e.Keys["ID"]));
            dt.Rows.Remove(row);
            e.Cancel = true;

            ReenumerarItem(dt);

            Session["TablaCompensacion"] = dt;

            this.grdDepositos.DataSource = dt;
            this.grdDepositos.DataBind();

            Totales();
        }

        protected void btnConfirmar_Click(object sender, EventArgs e)
        {
            try
            {
                if (Convert.ToDecimal(lblTotHaberSoles.Text) > 0)
                {
                    if (Convert.ToDecimal(lblTotDebeSoles.Text) == Convert.ToDecimal(lblTotHaberSoles.Text))
                    {
                        DataTable dt = new DataTable();
                        dt = (DataTable)Session["TablaCompensacion"];

                        T_SEG_USUARIO usuario = usu.listarUser(Session[DatosSesion.User].ToString())[0];

                        T_CON_OPERACION_CAB entity = new T_CON_OPERACION_CAB();
                        T_CON_OPERACION_DET entityDet = new T_CON_OPERACION_DET();

                        entity.ID_USUARIO = usuario.ID_USUARIO;
                        entity.DES_GLOSA = txtGlosa.Text;
                        entity.FEC_OPERACION = Convert.ToDateTime(lblFechaCompensacion.Text);
                        entity.IMP_TIPO_CAMBIO = Convert.ToDecimal(lblTipoCambio.Text);
                        entity.ID_MONEDA = Convert.ToInt32(cboTipoOperacion.Value);

                        if (BL_CompensacionVehiculo.GuardarOperacionCab(entity))
                        {
                            int idCab = BL_CompensacionVehiculo.UltimoIdGenerado();

                            //Guarda los Abonos y Facturas
                            for (int x = 0; x < dt.Rows.Count; x++)
                            {
                                if (Convert.ToDecimal(dt.Rows[x]["DebeSoles"]) > 0)
                                {
                                    entityDet.ID_OPERACION = idCab;
                                    entityDet.ID_CLIENTE = Convert.ToInt32(lblIdCliente.Text);
                                    entityDet.ID_DOCUMENTO = Convert.ToInt32(dt.Rows[x]["IdClaseFactura"]);
                                    entityDet.NUM_DOCUMENTO = Convert.ToInt32(dt.Rows[x]["NroOperacion"]);
                                    entityDet.FEC_EMISION = Convert.ToDateTime(lblFechaCompensacion.Text);
                                    entityDet.ID_CUENTA = 12201010;
                                    entityDet.IND_DEBE_HABER = "D";
                                    entityDet.ID_MONEDA = Convert.ToInt32(cboTipoOperacion.Value);
                                    entityDet.IMP_SOLES = Convert.ToDecimal(dt.Rows[x]["DebeSoles"]);
                                    entityDet.IMP_DOLARES = Convert.ToDecimal(dt.Rows[x]["DebeDolar"]);
                                    entityDet.IMP_TIPO_CAMBIO = Convert.ToDecimal(dt.Rows[x]["TipoCambio"]);

                                    BL_CompensacionVehiculo.GuardarOperacionDet(entityDet);

                                }
                                else if (Convert.ToDecimal(dt.Rows[x]["HaberSoles"]) > 0)
                                {
                                    entityDet.ID_OPERACION = idCab;
                                    entityDet.ID_CLIENTE = Convert.ToInt32(lblIdCliente.Text);
                                    entityDet.ID_DOCUMENTO = Convert.ToInt32(dt.Rows[x]["IdClaseFactura"]);
                                    entityDet.NUM_DOCUMENTO = Convert.ToInt32(dt.Rows[x]["NroOperacion"]);
                                    entityDet.FEC_EMISION = Convert.ToDateTime(lblFechaCompensacion.Text);
                                    entityDet.ID_CUENTA = 12121020;
                                    entityDet.IND_DEBE_HABER = "H";
                                    entityDet.ID_MONEDA = Convert.ToInt32(cboTipoOperacion.Value);
                                    entityDet.IMP_SOLES = Convert.ToDecimal(dt.Rows[x]["HaberSoles"]);
                                    entityDet.IMP_DOLARES = Convert.ToDecimal(dt.Rows[x]["HaberDolar"]);
                                    entityDet.IMP_TIPO_CAMBIO = Convert.ToDecimal(dt.Rows[x]["TipoCambio"]);

                                    BL_CompensacionVehiculo.GuardarOperacionDet(entityDet);
                                }

                            }

                            //Guardar la logica de Tabla OperacionTran.
                            BL_CompensacionVehiculo.GuardarLogicaTran(idCab);

                            string listadoFacturas = ListadoFacturasCompensadas();

                            if (!String.IsNullOrEmpty(listadoFacturas))
                            {
                                EnviarCorreo();
                            }

                            string script = "ShowExito();";
                            ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                            btnBuscarFacturas.Enabled = false;
                            btnGuardar.Enabled = false;
                            txtGlosa.Enabled = false;
                            grdDepositos.Enabled = false;
                            Totales();


                        }
                    }
                    else
                    {
                        lblValidacionA.Text = "El monto aplicado de deposito, debe ser igual al monto aplicado de facturas.";
                        string script = "ShowValidacion();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                    }

                }
                else
                {
                    lblValidacionA.Text = "Agregue facturas a compensar.";
                    string script = "ShowValidacion();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }

            }
            catch (Exception)
            {
                string script = "ShowError();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
            }

        }

        protected void grdDepositos_ParseValue(object sender, DevExpress.Web.Data.ASPxParseValueEventArgs e)
        {
            if (e.FieldName.Equals("ImpAplicar"))
            {
                decimal ImpAplicar = 0;

                if (e.Value == null || !decimal.TryParse(e.Value.ToString(), out ImpAplicar))
                    throw new Exception("Ingrese un valor númerico");

            }
        }


        protected void grdDepositos_StartRowEditing(object sender, DevExpress.Web.Data.ASPxStartRowEditingEventArgs e)
        {

        }

        protected void grdDepositos_RowValidating(object sender, DevExpress.Web.Data.ASPxDataValidationEventArgs e)
        {

        }

        void AddError(Dictionary<GridViewColumn, string> errors, GridViewColumn column, string errorText)
        {
            if (errors.ContainsKey(column)) return;
            errors[column] = errorText;
        }

        protected void btnAgregar_Click(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt = (DataTable)Session["TablaCompensacion"];

            int id = Convert.ToInt32(Session["ID_EDITAR"]);

            DataRow[] Fila = dt.Select("ID='" + id.ToString() + "'");

            int idDocumento = Convert.ToInt32(Fila[0]["IdClaseFactura"]);
            int idMoneda = Convert.ToInt32(Fila[0]["IdMoneda"]);
            decimal Aplica = 0;

            if (idMoneda == 1)
            {
                Aplica = Convert.ToDecimal(txtSoles.Text);
            }
            else
            {
                Aplica = Convert.ToDecimal(txtDolar.Text);
            }

            decimal SaldoOriginal = Convert.ToDecimal(lblSaldoOriginal.Text);

            if (Aplica > SaldoOriginal)
            {
                lblValidacionA.Text = "El importe a aplicar no puede ser mayor al saldo original.";
                string script = "ShowValidacion();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
            }
            else
            {


                if (idDocumento == 119 || idDocumento == 111 || idDocumento == 112 || idDocumento == 113 || idDocumento == 114)
                {
                    if (idMoneda == 1)
                    {
                        dt.Rows[id - 1]["DebeSoles"] = Convert.ToDecimal(txtSoles.Text);
                        dt.Rows[id - 1]["DebeDolar"] = Convert.ToDecimal(txtSoles.Text) / Convert.ToDecimal(Fila[0]["TipoCambio"]);
                    }
                    else
                    {
                        dt.Rows[id - 1]["DebeSoles"] = Convert.ToDecimal(txtDolar.Text) * Convert.ToDecimal(Fila[0]["TipoCambio"]);
                        dt.Rows[id - 1]["DebeDolar"] = Convert.ToDecimal(txtDolar.Text);
                    }

                }
                else
                {
                    if (idMoneda == 1)
                    {
                        dt.Rows[id - 1]["HaberSoles"] = Convert.ToDecimal(txtSoles.Text);
                        dt.Rows[id - 1]["HaberDolar"] = Convert.ToDecimal(txtSoles.Text) / Convert.ToDecimal(Fila[0]["TipoCambio"]);
                    }
                    else
                    {
                        dt.Rows[id - 1]["HaberSoles"] = Convert.ToDecimal(txtDolar.Text) * Convert.ToDecimal(Fila[0]["TipoCambio"]);
                        dt.Rows[id - 1]["HaberDolar"] = Convert.ToDecimal(txtDolar.Text);
                    }
                }

                Session["TablaCompensacion"] = dt;

                grdDepositos.DataSource = dt;
                grdDepositos.DataBind();

                Totales();

            }



        }

        protected void CargarClaseFactura()
        {

        }

        protected void btnAjuste_Click(object sender, EventArgs e)
        {

        }


        protected void ibAjustar_Click(object sender, ImageClickEventArgs e)
        {

        }

        protected void ibAjustarDeposito_Click(object sender, ImageClickEventArgs e)
        {

        }

        protected void btnBuscarFacturas_Click(object sender, EventArgs e)
        {
            CargarFacturas();
        }

        protected void grdDepositos_RowCommand(object sender, ASPxGridViewRowCommandEventArgs e)
        {
            int id = Convert.ToInt32(e.CommandArgs.CommandArgument);

            DataTable dt = (DataTable)Session["TablaCompensacion"];

            if (e.CommandArgs.CommandName == "Editar")
            {
                Session["ID_EDITAR"] = id;

                DataRow[] Fila = dt.Select("ID='" + id.ToString() + "'");

                int idDocumento = Convert.ToInt32(Fila[0]["IdClaseFactura"]);
                int idMoneda = Convert.ToInt32(Fila[0]["IdMoneda"]);

                if (idDocumento == 119 || idDocumento == 111 || idDocumento == 112 || idDocumento == 113 || idDocumento == 114)
                {
                    lblCuentaSoles.Text = "Debe S/.";
                    lblCuentaDolar.Text = "Debe $";
                    txtSoles.Text = string.Format("{0:n2}", Fila[0]["DebeSoles"]);
                    txtDolar.Text = string.Format("{0:n2}", Fila[0]["DebeDolar"]);
                }
                else
                {
                    lblCuentaSoles.Text = "Haber S/.";
                    lblCuentaDolar.Text = "Haber $";
                    txtSoles.Text = string.Format("{0:n2}", Fila[0]["HaberSoles"]);
                    txtDolar.Text = string.Format("{0:n2}", Fila[0]["HaberDolar"]);
                }

                lblTCActualizar.Text = string.Format("{0:n2}", Fila[0]["TipoCambio"]);
                lblSaldoOriginal.Text = string.Format("{0:n2}", Fila[0]["ImpAplicar"]);

                if (idMoneda == 1)
                {
                    txtSoles.Enabled = true;
                    txtDolar.Enabled = false;
                }
                else
                {
                    txtSoles.Enabled = false;
                    txtDolar.Enabled = true;
                }

                string script = "ShowpopupActualiza();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
            }
            else if (e.CommandArgs.CommandName == "Ajustar")
            {
                DataRow[] Fila = dt.Select("ID='" + id.ToString() + "'");

                decimal TotDebeSoles = Convert.ToDecimal(lblTotDebeSoles.Text);
                decimal TotHaberSoles = Convert.ToDecimal(lblTotHaberSoles.Text);
                decimal DebeSoles = 0;
                decimal HaberSoles = 0;


                if (TotDebeSoles < TotHaberSoles)
                {
                    //Se trabaja con Haber

                    if (Convert.ToDecimal(dt.Rows[id - 1]["HaberSoles"]) > 0)
                    {
                        decimal TotalDiferencia = TotHaberSoles - TotDebeSoles;
                        HaberSoles = Convert.ToDecimal(dt.Rows[id - 1]["HaberSoles"]);
                        dt.Rows[id - 1]["HaberSoles"] = HaberSoles - TotalDiferencia;
                        dt.Rows[id - 1]["HaberDolar"] = (HaberSoles - TotalDiferencia) / Convert.ToDecimal(dt.Rows[id - 1]["TipoCambio"]);
                    }

                }
                else if (TotDebeSoles > TotHaberSoles)
                {
                    //Se trabaja con Debe

                    if (Convert.ToDecimal(dt.Rows[id - 1]["DebeSoles"]) > 0)
                    {
                        decimal TotalDiferencia = TotDebeSoles - TotHaberSoles;
                        DebeSoles = Convert.ToDecimal(dt.Rows[id - 1]["DebeSoles"]);
                        dt.Rows[id - 1]["DebeSoles"] = DebeSoles - TotalDiferencia;
                        dt.Rows[id - 1]["DebeDolar"] = (DebeSoles - TotalDiferencia) / Convert.ToDecimal(dt.Rows[id - 1]["TipoCambio"]);
                    }

                }

                Session["TablaCompensacion"] = dt;

                Totales();

                grdDepositos.DataSource = dt;
                grdDepositos.DataBind();

            }


        }

        protected void btnAceptarA_Click(object sender, EventArgs e)
        {
            try
            {
                DataTable dtCompensacion = new DataTable();
                dtCompensacion = (DataTable)Session["TablaCompensacion"];

                DataRow dr;

                Session["indicador"] = 0;
                int indicador = Convert.ToInt32(Session["indicador"]);
                int indiSaldo = 0;

                List<object> fieldValues = grdFacturas.GetSelectedFieldValues(new string[] { "NRO_FACTURA", "NRO_FOLIO", "FEC_FACTURA", "IMP_VENTA_SOLES", "SaldoFacturaSoles", "SaldoFacturaDolar", "ID_MONEDA", "Moneda", "ID_CLASE_FACTURA", "DES_CLASE_FACTURA", "IMP_VENTA_DOLAR", "IMP_TIPO_CAMBIO" });
                foreach (object[] item in fieldValues)
                {
                    for (int x = 0; x < dtCompensacion.Rows.Count; x++)
                    {
                        string factura = dtCompensacion.Rows[x]["NroOperacion"].ToString();
                        string facturaA = item[0].ToString();

                        if (factura == facturaA)
                        {
                            indicador = indicador + 1;
                        }

                    }

                    if (Convert.ToDecimal(item[4]) == 0)
                    {
                        indiSaldo = indiSaldo + 1;
                    }


                }

                Session["indicador"] = indicador;

                if (indiSaldo == 0)
                {
                    if (Convert.ToInt32(Session["indicador"]) == 0)
                    {
                        foreach (object[] item in fieldValues)
                        {

                            if (item[8].ToString() == "111" || item[8].ToString() == "112" || item[8].ToString() == "113" || item[8].ToString() == "114") //notas de credito
                            {
                                //Se agregan las Notas de credito
                                dr = dtCompensacion.NewRow();
                                dr.BeginEdit();
                                dr["ID"] = dtCompensacion.Rows.Count + 1;
                                dr["IdClaseFactura"] = item[8].ToString();
                                dr["DesClaseFactura"] = item[9].ToString();
                                dr["IdCuenta"] = "12201010";
                                dr["CtaCorriente"] = item[1].ToString();
                                dr["IdMoneda"] = item[6].ToString();
                                dr["Moneda"] = item[7].ToString();
                                dr["DebeSoles"] = Convert.ToDecimal(item[4]);
                                dr["HaberSoles"] = 0;
                                dr["DebeDolar"] = Convert.ToDecimal(item[5]);
                                dr["HaberDolar"] = 0;

                                if (Convert.ToInt32(item[6]) == 1)
                                {
                                    dr["ImpAplicar"] = Convert.ToDecimal(item[3]);
                                }
                                else if (Convert.ToInt32(item[6]) == 2)
                                {
                                    dr["ImpAplicar"] = Convert.ToDecimal(item[10]);
                                }

                                dr["TipoCambio"] = Convert.ToDecimal(item[11]);
                                dr["FechaOperacion"] = Convert.ToDateTime(item[2]).ToShortDateString();
                                dr["NroOperacion"] = item[0];
                                dr["NroDocumento"] = item[0];
                                dr.EndEdit();
                                dtCompensacion.Rows.Add(dr);

                            }
                            else
                            {
                                //Se agrega las facturas
                                dr = dtCompensacion.NewRow();
                                dr.BeginEdit();
                                dr["ID"] = dtCompensacion.Rows.Count + 1;
                                dr["IdClaseFactura"] = item[8].ToString();
                                dr["DesClaseFactura"] = item[9].ToString();
                                dr["IdCuenta"] = "12121020";
                                dr["CtaCorriente"] = item[1].ToString();
                                dr["IdMoneda"] = item[6].ToString();
                                dr["Moneda"] = item[7].ToString();
                                dr["DebeSoles"] = 0;
                                dr["HaberSoles"] = Convert.ToDecimal(item[4]);
                                dr["DebeDolar"] = 0;
                                dr["HaberDolar"] = Convert.ToDecimal(item[5]);

                                if (Convert.ToInt32(item[6]) == 1)
                                {
                                    dr["ImpAplicar"] = Convert.ToDecimal(item[3]);
                                }
                                else if (Convert.ToInt32(item[6]) == 2)
                                {
                                    dr["ImpAplicar"] = Convert.ToDecimal(item[10]);
                                }

                                dr["TipoCambio"] = Convert.ToDecimal(item[11]);
                                dr["FechaOperacion"] = Convert.ToDateTime(item[2]).ToShortDateString();
                                dr["NroOperacion"] = item[0];
                                dr["NroDocumento"] = item[0];
                                dr.EndEdit();
                                dtCompensacion.Rows.Add(dr);

                            }


                        }


                        Session["TablaCompensacion"] = dtCompensacion;

                        grdDepositos.DataSource = dtCompensacion;
                        grdDepositos.DataBind();

                        Totales();
                        Response.Redirect("/Vehiculos/wFrmCompensacionVehiculoAsociar.aspx?id=3&sub=35");

                    }
                    else
                    {
                        //"La factura seleccionada ya se agregó."
                        string script = "ShowValidacion();";
                        ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                    }
                }
                else
                {
                    //"Seleccione una factura con saldo mayor a 0.";
                    string script = "ShowValidacion2();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }

            }
            catch (Exception)
            {
                //"Error al procesar los Datos.";
                lblValidacionA.Text = "Error al procesar los Datos.";
                string script = "ShowValidacion();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
            }
        }


        protected void UsuariosCorreo()
        {
            int idCab = Convert.ToInt32(ConfigurationManager.AppSettings["UsuarioCorreoCompensacion"]);

            grdUsuariosNotificar.DataSource = TablaDetLogic.ListarUsuariosCorreo(idCab);
            grdUsuariosNotificar.DataBind();

        }

        protected void EnviarCorreo()
        {
            T_SEG_USUARIO usuarioCompesador = usu.listarUser(Session[DatosSesion.User].ToString())[0];

            string compensador = usuarioCompesador.DES_NOMBRE + " " + usuarioCompesador.DES_APELLIDOS;
            string facturas = ListadoFacturasCompensadas();

            List<string> ccUsuario = new List<string>();
            ccUsuario.Add(usuarioCompesador.DES_EMAIL);

            List<string> correos = new List<string>();

            for (int i = 0; i < grdUsuariosNotificar.VisibleRowCount; i++)
            {

                string row = (string)grdUsuariosNotificar.GetRowValues(i, "CORREO").ToString();

                correos.Add(row);

            }

            string body = "Se acaba de realizar la compensacion de facturas para el cliente " + lblCliente.Text.ToString() + ", estas ya pueden imprimirse.";
            string remitente = ConfigurationManager.AppSettings["MailFrom"];

            string mensaje = string.Format(HtmlEmail.HtmlNotificacionCompensacionVehiculos, body, facturas, compensador);

            Crosland.Util.Util.SendEmail(correos, "Compensacion de facturas - " + lblCliente.Text, mensaje, remitente, ccUsuario);



        }

        protected string ListadoFacturasCompensadas()
        {
            DataTable dtCompensacion = new DataTable();
            dtCompensacion = (DataTable)Session["TablaCompensacion"];

            List<string> FacturasCompensadas = new List<string>();
            decimal saldo = 0;
            string listadoFacturas = string.Empty;

            for (int x = 0; x < dtCompensacion.Rows.Count; x++)
            {
                if (Convert.ToDecimal(dtCompensacion.Rows[x]["HaberSoles"]) > 0)
                {
                    int factura = Convert.ToInt32(dtCompensacion.Rows[x]["NroDocumento"]);
                    string folio = dtCompensacion.Rows[x]["CtaCorriente"].ToString();

                    saldo = BL_CompensacionVehiculo.VerificarFacturasCompensadas(factura);

                    if (saldo == 0)
                    {
                        FacturasCompensadas.Add(folio);
                    }

                }
            }

            for (int y = 0; y < FacturasCompensadas.Count; y++)
            {
                if (y == FacturasCompensadas.Count - 1)
                {
                    listadoFacturas = listadoFacturas + FacturasCompensadas[y].ToString();
                }
                else
                {
                    listadoFacturas = listadoFacturas + FacturasCompensadas[y].ToString() + ", ";
                }
            }

            return listadoFacturas;


        }

        protected void grdDepositos_PageIndexChanged(object sender, EventArgs e)
        {
            DataTable dtCompensacion = new DataTable();
            dtCompensacion = (DataTable)Session["TablaCompensacion"];

            grdDepositos.DataSource = dtCompensacion;
            grdDepositos.DataBind();


        }



    }
}